package com.qf.userfull.dict;

public class DictionaryImpl implements Dictionary{

    // 单词的数组
    private Word[] arr = new Word[1000];

    // 区分英单词的首字母
//    private Word[] wordStatWithA = new Word[1000];

    // 记录单词的数量
    private int count = 0;

    /**
     * 找到单词在数组中应该存放的位置
     * @param englishWord
     * @param chineseWord
     */
    @Override
    public void addWord(String englishWord, String chineseWord) {
        Word word = new Word(englishWord, chineseWord);
        int index =  getArrIndex(englishWord); // 计算英文单词应该存放的数组的下标
        arr[index] = word;
        count++;
    }

    /**
     * 类中的不想让外面代码方法的方法，可以使用private修饰
     *
     * 如何把 一个 englishWord 转换为 [0,99] 内的一个整数呢？
     * @param englishWord
     * @return
     */
    private int getArrIndex(String englishWord) {

        int hashCode = englishWord.hashCode();
        int index = hashCode % arr.length;

        if (index<0){
            index*=-1;
        }

        return index;
    }

    @Override
    public String findWord(String englishWord) {
//        for (int i = 0; i < count; i++) {
//            Word word = arr[i];
//            if (word.getEnglishWord().equals(englishWord)){
//                return word.getChineseWord();
//            }
//        }
        int arrIndex = getArrIndex(englishWord);
        if (arr[arrIndex]!=null){
            return arr[arrIndex].getChineseWord();
        }
        return null;
    }
}
